package reflect;


import java.lang.reflect.Method;
import java.util.Map;
import java.util.Scanner;

/**
 * java的反射机制：
 * 反射是Java的动态机制，允许程序在【运行期间】在确定对象的实例化，属性操作，方法调用等
 * 可以提高代码的灵活度、扩展性、维护性
 * 但运行效率低、开销大
 */
public class ReflectDemo1 {
    public static void main(String[] args) throws ClassNotFoundException {
            /*Class cla1=String.class;
            Class cla2= ArrayDemo.class;
            Class cla3=int.class;

            Class cla4=Class.forName("java.lang.String");
            Class cla5=Class.forName("java.util.ArrayList");
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入一个类名");
            String name=sc.nextLine();
            Class cla6=Class.forName(name);*/

        Scanner sc=new Scanner(System.in);
        System.out.println("输入一个完全限定的类名");
        String name=sc.nextLine();
        Class cla1=Class.forName(name);//得到这个对象

        String name1 = cla1.getName();
        System.out.println("获取类的完全限定名："+name1);
        String simpleName = cla1.getSimpleName();
        System.out.println("获取类的简单类名"+simpleName);
        Package aPackage = cla1.getPackage();
        System.out.println("获取类的包名："+aPackage.getName());
        Method[] methods = cla1.getMethods();
        System.out.println(simpleName+"有"+methods.length+"个方法");
        for (Method m:methods){
            System.out.println(m.getName());
        }


    }
}
